package cn.iocoder.yudao.module.iot.service.devicedataupload;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.iot.controller.admin.devicedataupload.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicedataupload.DeviceDataUploadDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 物联网设备上报数据记录 Service 接口
 *
 * @author 芋道源码
 */
public interface DeviceDataUploadService {

    /**
     * 创建物联网设备上报数据记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createDeviceDataUpload(@Valid DeviceDataUploadCreateReqVO createReqVO);

    /**
     * 更新物联网设备上报数据记录
     *
     * @param updateReqVO 更新信息
     */
    void updateDeviceDataUpload(@Valid DeviceDataUploadUpdateReqVO updateReqVO);

    /**
     * 删除物联网设备上报数据记录
     *
     * @param id 编号
     */
    void deleteDeviceDataUpload(Integer id);

    /**
     * 获得物联网设备上报数据记录
     *
     * @param id 编号
     * @return 物联网设备上报数据记录
     */
    DeviceDataUploadDO getDeviceDataUpload(Integer id);

    /**
     * 获得物联网设备上报数据记录列表
     *
     * @param ids 编号
     * @return 物联网设备上报数据记录列表
     */
    List<DeviceDataUploadDO> getDeviceDataUploadList(Collection<Integer> ids);

    /**
     * 获得物联网设备上报数据记录分页
     *
     * @param pageReqVO 分页查询
     * @return 物联网设备上报数据记录分页
     */
    PageResult<DeviceDataUploadDO> getDeviceDataUploadPage(DeviceDataUploadPageReqVO pageReqVO);

    /**
     * 获得物联网设备上报数据记录列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 物联网设备上报数据记录列表
     */
    List<DeviceDataUploadDO> getDeviceDataUploadList(DeviceDataUploadExportReqVO exportReqVO);

}
